using System;
using GuidanceExplorer.Model;
using GuidanceExplorer.Services;

namespace GuidanceExplorerAddIn.Services
{
    public interface IAddinModelStorageService : IModelStorageService
    {
        //void LoadAddinGuidance(EnvDTE.Solution solution);
        /// <summary>
        /// Loads the Guidance associated to the given Visual Studio solution to the Guidance. 
        /// </summary>
        /// <param name="solutionName">The solution's name</param>
        /// <param name="solutionFullName">The solution's full name</param>
        void LoadSolutionGuidance(string solutionName, string solutionFullName);
        
        /// <summary>
        /// Saves the solution guidance to the solution's folder
        /// </summary>
        void SaveSolutionGuidance();

        /// <summary>
        /// Export the solution guidance to the specified path.
        /// </summary>
        void ExportSolution(String saveSolutionPath);


        /// <summary>
        /// Export an under the solution node folder  to the specified path.
        /// </summary>
        void ExportSolutionModelItem(String saveSolutionPath, IModelItem modelItem);
        /// <summary>
        /// Export the solution guidance to the specified path.
        /// </summary>
        void ImportSolution(String guidanceFilePath);
        /// <summary>
        /// Import an exported solution guidance to the specified folder.
        /// </summary>
        void ImportItemSolutionToFolder(String guidanceFilePath, Folder folder);
        /// <summary>
        /// Gets the Guidance, including the items under the SolutionViews.
        /// </summary>
        Guidance Guidance { get; }
        
        /// <summary>
        /// Copies the guidance item to the solution views by value.
        /// </summary>
        /// <param name="guidanceItem"></param>
        /// <returns></returns>
        GuidanceItemFileReference CopyItemByValueToSolution(GuidanceItemFileReference guidanceItem);

	}
}
